package com.CampaignManager.shared;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface CampaignServiceAsync {
	
	public void login(String requestUri, AsyncCallback<PlayerDTO[]> async);
	
	public void CreateNewPlayer(String requestUri, String name, String desc, String faction, AsyncCallback<PlayerDTO> async);
	
	public void SetDoneTutorial(String tut, AsyncCallback<Void> async);
	
	public void AddCity(CityDTO city, AsyncCallback<Long> async);
	
	public void UpdateCityLocation(Long id, double lat, double lng, AsyncCallback<Void> async);
	
	public void GetCities(AsyncCallback<CityDTO[]> async);
	
	public void UpdateArmyDestination(String email, double originLat, double originLong, double destLat, double destLong, double miles, AsyncCallback<Void> async);
	
	public void CheckExistingPendingJob(AsyncCallback<Boolean> async);
	
	public void CreateJob(JobDTO job, AsyncCallback<String> async);
	
	public void GetJobs(String email, AsyncCallback<JobDTO[]> async);
	
	public void CompleteJob(JobDTO job, AsyncCallback<Void> async);
	
	public void GetUnitTypes(String faction, boolean mercs, AsyncCallback<UnitTypeDTO[]> async);
	
	public void PrimeData(AsyncCallback<Void> async);
	
	public void BuyUnit(UnitTypeDTO unitType, AsyncCallback<UnitDTO> async);
	
	public void UpgradeUnit(UnitDTO unit, AsyncCallback<String> async);
	
	public void Forage(AsyncCallback<Void> async);
	
	public void CancelEspionage(AsyncCallback<Void> async);
	
	public void Extort(String cityName,AsyncCallback<Void> async);
	
	public void UpdateBio(String bio,AsyncCallback<Void> async);
	
	public void IncrementStat(String email, PlayerDTO.Stat s,AsyncCallback<Void> async);
	
	/*public void getPlayers(AsyncCallback<PlayerClient[]> async);
	public void updatePlayerLocation(String email, double lat, double lng, AsyncCallback<Void> async);
	
	public void addMessage(InboxMessageClient messageClient, AsyncCallback<Long> async);
	public void removeMessage(Long id, AsyncCallback<Void> async);
	public void getInbox(AsyncCallback<InboxMessageClient[]> async);
	
	public void addUnitType(UnitTypeClient unitTypeClient, AsyncCallback<Long> async);
	public void removeUnitType(Long id, AsyncCallback<Void> async);
	public void getUnitTypes(AsyncCallback<UnitTypeClient[]> async);
	public void UpdateCost(Long id, String resource, AsyncCallback<Void> async);
	
	public void BuyUnit(UnitTypeClient unitType, AsyncCallback<UnitClient> async);
	public void UpgradeUnit(UnitClient unit, AsyncCallback<UnitClient> async);
	
	public void removeUnit(Long id, AsyncCallback<Void> async);
	public void getUnits(AsyncCallback<UnitClient[]> async);
	
	public void addMarker(MapMarkerClient markerClient, AsyncCallback<Long> async);
	public void removeMarker(Long id, AsyncCallback<Void> async);
	public void getMarkers(AsyncCallback<MapMarkerClient[]> async);
	public void UpdateMarkerLocation(Long id, double lat, double lng, AsyncCallback<Void> async);
	
	public void addRegion(RegionClient regionClient, AsyncCallback<Long> async);
	public void getRegions(AsyncCallback<RegionClient[]> async);
	public void UpdateRegionLocation(Long id, double lat, double lng, AsyncCallback<Void> async);
	public void HarvestRegion(RegionClient regionClient, String resource, AsyncCallback<Void> async);*/
}
